﻿using System;
using System.Collections.Generic;
using System.Text;
using MODELO;
using MODELO.dtsGruposTableAdapters;
using MODELO.dtsConsultaGruposTableAdapters;
using System.Data;

namespace CONTROLADORA
{
    public class Grupos
    {
        public dtsConsultaGrupos GetGrupos()
        {
            dtsConsultaGrupos ds = new dtsConsultaGrupos();
            new ConsultaGruposTableAdapter().FillGruposActivos(ds.ConsultaGrupos);
            return ds;
        }

        public dtsConsultaGrupos GetGrupos(string codigo, string nombre)
        {
            dtsConsultaGrupos ds = new dtsConsultaGrupos();
            new ConsultaGruposTableAdapter().FillByCodigoNombre(ds.ConsultaGrupos, codigo, nombre);
            return ds;
        }

        public dtsGrupos GetGrupoPorID(int id)
        {
            dtsGrupos grupos = new dtsGrupos();

            new GrupoTableAdapter().FillByID(grupos.Grupo, id);

            new Grupo_PermisoTableAdapter().FillByIDGrupo(grupos.Grupo_Permiso, id);

            return grupos;
        }

        public void GuardarEntidad(dtsGrupos dtsABM)
        {
            MODELO.dtsGruposTableAdapters.TableAdapterManager tam = new MODELO.dtsGruposTableAdapters.TableAdapterManager();
            tam.GrupoTableAdapter = new GrupoTableAdapter();
            tam.GrupoTableAdapter.Update(dtsABM.Grupo);

            Grupo_PermisoTableAdapter taMM = new Grupo_PermisoTableAdapter();
            foreach (dtsGrupos.Grupo_PermisoRow filaMM in dtsABM.Grupo_Permiso.Rows)
            {
                switch (filaMM.RowState)
                {
                    case DataRowState.Added:
                        taMM.InsertQuery(filaMM.GrupoRow.ID_Grupo, filaMM.ID_Permiso);
                        break;
                    case DataRowState.Deleted:
                        taMM.DeleteQuery((int)filaMM[dtsABM.Grupo_Permiso.ID_GrupoColumn, DataRowVersion.Original], (int)filaMM[dtsABM.Grupo_Permiso.ID_PermisoColumn, DataRowVersion.Original]);
                        break;
                    case DataRowState.Detached:
                    case DataRowState.Modified:
                    case DataRowState.Unchanged:
                    default:
                        break;
                }
            }
        }
    }
}
